home *** CD-ROM | disk | FTP | other *** search
/ The Programmer Disk / The Programmer Disk (Microforum).iso / xpro / vb1 / pro21 / iniio.bas < prev    next >
BASIC Source File  |  1992-10-11  |  9KB  |  207 lines

  1. '
  2. '   VB/DOS functions to act as DOS equivelants
  3. '   to the Windows 3.x API calls:
  4. '
  5. '   1.  GetPrivateProfileInt
  6. '   2.  GetPrivateProfileString
  7. '   3.  WritePrivateProfileString
  8. '
  9. '   October 11th, 1992
  10. '   by Raymond W. Six (CompuServe: 70530,433)
  11. '
  12. '   Public Domain Source Code!
  13. '
  14. DECLARE FUNCTION GetPrivateProfileInt (BYVAL lpApplicationName AS STRING, BYVAL lpKeyName AS STRING, BYVAL nDefault AS INTEGER, BYVAL lpFileName AS STRING) AS INTEGER
  15. DECLARE FUNCTION GetPrivateProfileString (BYVAL lpApplicationName AS STRING, BYVAL lpKeyName AS STRING, BYVAL lpDefault AS STRING, lpReturnedString AS STRING, BYVAL nSize AS INTEGER, BYVAL lpFileName AS STRING) AS INTEGER
  16. DECLARE FUNCTION WritePrivateProfileString (BYVAL lpApplicationName AS STRING, BYVAL lpKeyName AS STRING, BYVAL lpString AS STRING, BYVAL lpFileName AS STRING) AS INTEGER
  17. REM $INCLUDE: 'C:\VBDOS\CONSTANT.BI'
  18.  
  19. FUNCTION GetPrivateProfileInt (BYVAL lpApplicationName AS STRING, BYVAL lpKeyName AS STRING, BYVAL nDefault AS INTEGER, BYVAL lpFileName AS STRING) AS INTEGER
  20.      ON LOCAL ERROR GOTO GPPIErrorHandler:
  21.      DIM FileNum AS INTEGER
  22.      DIM LineOfText AS STRING
  23.      DIM SectionFound AS INTEGER
  24.      DIM SectionPassed AS INTEGER
  25.      DIM LineFound AS INTEGER
  26.      DIM SectionID AS STRING
  27.      DIM LineID AS STRING
  28.      DIM TempValue AS INTEGER
  29.      FileNum = FREEFILE
  30.      LineOfText = ""
  31.      SectionFound = FALSE
  32.      LineFound = FALSE
  33.      SectionID = "[" + lpApplicationName + "]"
  34.      LineID = lpKeyName + "="
  35.      OPEN lpFileName FOR INPUT AS #FileNum
  36.           DO UNTIL EOF(FileNum)
  37.                LINE INPUT #FileNum, LineOfText
  38.                IF NOT SectionFound THEN
  39.                          '
  40.                          '    start/continue to look for section identifier...
  41.                          '
  42.                          IF UCASE$(LEFT$(LineOfText, (LEN(SectionID)))) = UCASE$(SectionID) THEN
  43.                               SectionFound = TRUE
  44.                          END IF
  45.                     ELSE
  46.                          '
  47.                          '    start/continue to look for line indentifier...
  48.                          '
  49.                          IF LEFT$(LineOfText, 1) = "[" THEN
  50.                                    '
  51.                                    '    section has been passed, give up...
  52.                                    '
  53.                                    EXIT DO
  54.                               ELSE
  55.                                    IF UCASE$(LEFT$(LineOfText, (LEN(LineID)))) = UCASE$(LineID) THEN
  56.                                         '
  57.                                         '    this is it!, use it and then exit...
  58.                                         '
  59.                                         LineFound = TRUE
  60.                                         TempValue = VAL(RIGHT$(LineOfText, (LEN(LineOfText) - (LEN(LineID)))))
  61.                                         IF TempValue > 0 THEN
  62.                                                   GetPrivateProfileInt = TempValue
  63.                                              ELSE
  64.                                                   GetPrivateProfileInt = 0
  65.                                         END IF
  66.                                         EXIT DO
  67.                                    END IF
  68.                          END IF
  69.                END IF
  70.           LOOP
  71.      CLOSE FileNum
  72. GPPIUseDefault:
  73.      IF NOT LineFound THEN
  74.           GetPrivateProfileInt = nDefault
  75.      END IF
  76.      EXIT FUNCTION
  77. GPPIErrorHandler:
  78.      GetPrivateProfileInt = nDefault
  79.      RESUME GPPIUseDefault:
  80.      EXIT FUNCTION
  81. END FUNCTION
  82.  
  83. FUNCTION GetPrivateProfileString (BYVAL lpApplicationName AS STRING, BYVAL lpKeyName AS STRING, BYVAL lpDefault AS STRING, lpReturnedString AS STRING, BYVAL nSize AS INTEGER, BYVAL lpFileName AS STRING) AS INTEGER
  84.      ON LOCAL ERROR GOTO GPPSErrorHandler:
  85.      DIM FileNum AS INTEGER
  86.      DIM LineOfText AS STRING
  87.      DIM SectionFound AS INTEGER
  88.      DIM SectionPassed AS INTEGER
  89.      DIM LineFound AS INTEGER
  90.      DIM SectionID AS STRING
  91.      DIM LineID AS STRING
  92.      FileNum = FREEFILE
  93.      LineOfText = ""
  94.      SectionFound = FALSE
  95.      LineFound = FALSE
  96.      SectionID = "[" + lpApplicationName + "]"
  97.      LineID = lpKeyName + "="
  98.      OPEN lpFileName FOR INPUT AS #FileNum
  99.           DO UNTIL EOF(FileNum)
  100.                LINE INPUT #FileNum, LineOfText
  101.                IF NOT SectionFound THEN
  102.                          '
  103.                          '    start/continue to look for section identifier...
  104.                          '
  105.                          IF UCASE$(LEFT$(LineOfText, (LEN(SectionID)))) = UCASE$(SectionID) THEN
  106.                               SectionFound = TRUE
  107.                          END IF
  108.                     ELSE
  109.                          '
  110.                          '    start/continue to look for line indentifier...
  111.                          '
  112.                          IF LEFT$(LineOfText, 1) = "[" THEN
  113.                                    '
  114.                                    '    section has been passed, give up...
  115.                                    '
  116.                                    EXIT DO
  117.                               ELSE
  118.                                    IF UCASE$(LEFT$(LineOfText, (LEN(LineID)))) = UCASE$(LineID) THEN
  119.                                         '
  120.                                         '    this is it!, use it and then exit...
  121.                                         '
  122.                                         LineFound = TRUE
  123.                                         lpReturnedString = LEFT$((RIGHT$(LineOfText, (LEN(LineOfText) - (LEN(LineID))))), nSize)
  124.                                         EXIT DO
  125.                                    END IF
  126.                          END IF
  127.                END IF
  128.           LOOP
  129.      CLOSE FileNum
  130. GPPSUseDefault:
  131.      IF NOT LineFound THEN
  132.           lpReturnedString = LEFT$(lpDefault, nSize)
  133.      END IF
  134.      GetPrivateProfileString = LEN(lpReturnedString)
  135.      EXIT FUNCTION
  136. GPPSErrorHandler:
  137.      lpReturnedString = LEFT$(lpDefault, nSize)
  138.      GetPrivateProfileString = LEN(lpReturnedString)
  139.      RESUME GPPSUseDefault:
  140.      EXIT FUNCTION
  141. END FUNCTION
  142.  
  143. FUNCTION WritePrivateProfileString (BYVAL lpApplicationName AS STRING, BYVAL lpKeyName AS STRING, BYVAL lpString AS STRING, BYVAL lpFileName AS STRING) AS INTEGER
  144.      ON LOCAL ERROR GOTO WPPSErrorHandler:
  145.      DIM FileNum AS INTEGER
  146.      DIM LineOfText AS STRING
  147.      DIM SectionFound AS INTEGER
  148.      DIM LineFound AS INTEGER
  149.      DIM SectionID AS STRING
  150.      DIM LineID AS STRING
  151.      FileNum = FREEFILE
  152.      LineOfText = ""
  153.      SectionFound = FALSE
  154.      LineFound = FALSE
  155.      SectionID = "[" + lpApplicationName + "]"
  156.      LineID = lpKeyName + "="
  157.      OPEN lpFileName FOR INPUT AS #FileNum
  158.      OPEN "SecTemp.INI" FOR OUTPUT AS #(FileNum + 1)
  159.           DO UNTIL EOF(FileNum)
  160.                LINE INPUT #FileNum, LineOfText
  161.                IF SectionFound = FALSE THEN
  162.                          IF LEFT$(LineOfText, 1) = "[" THEN
  163.                               IF UCASE$(LEFT$(LineOfText, (LEN(SectionID)))) = UCASE$(SectionID) THEN
  164.                                    SectionFound = TRUE
  165.                               END IF
  166.                          END IF
  167.                          PRINT #(FileNum + 1), LineOfText
  168.                     ELSE
  169.                          IF LEFT$(LineOfText, 1) = "[" THEN
  170.                                    IF LineFound = FALSE THEN
  171.                                         LineFound = TRUE
  172.                                         PRINT #(FileNum + 1), (LineID + LTRIM$(RTRIM$(lpString)))
  173.                                         PRINT #(FileNum + 1), ""
  174.                                    END IF
  175.                                    PRINT #(FileNum + 1), LineOfText
  176.                               ELSE
  177.                                    IF UCASE$(LEFT$(LineOfText, (LEN(LineID)))) = UCASE$(LineID) THEN
  178.                                              LineFound = TRUE
  179.                                              PRINT #(FileNum + 1), (LineID + LTRIM$(RTRIM$(lpString)))
  180.                                         ELSE
  181.                                              PRINT #(FileNum + 1), LineOfText
  182.                                    END IF
  183.                          END IF
  184.                END IF
  185.           LOOP
  186.           IF SectionFound = FALSE THEN
  187.                     PRINT #(FileNum + 1), SectionID
  188.                     PRINT #(FileNum + 1), (LineID + LTRIM$(RTRIM$(lpString)))
  189.                ELSE
  190.                     IF LineFound = FALSE THEN
  191.                          PRINT #(FileNum + 1), (LineID + LTRIM$(RTRIM$(lpString)))
  192.                     END IF
  193.           END IF
  194.      CLOSE (FileNum + 1)
  195.      CLOSE FileNum
  196.      KILL lpFileName
  197.      NAME "SecTemp.INI" AS lpFileName
  198.      WritePrivateProfileString = -1
  199. WPPSUseDefault:
  200.      EXIT FUNCTION
  201. WPPSErrorHandler:
  202.      WritePrivateProfileString = 0
  203.      RESUME WPPSUseDefault:
  204.      EXIT FUNCTION
  205. END FUNCTION
  206.  
  207.